Telegram Group & Telegram Channel
🌐 Отложенная инициализация свойств

Отложенная инициализация свойств — это механизм, который позволяет отложить инициализацию переменных до момента их первого использования.

Этот вариант позволяет экономить ресурсы, т.к. избегает необходимости создания объектов при инициализации класса.

➡️ lateinit

Модификатор lateinit говорит о том, что данная переменная будет инициализирована позже. При этом инициализировать свойство можно из любого места, откуда она видна.

Правила использования модификатора lateinit:

🔵 lateinit может использоваться только с var свойствами класса;

🔵 lateinit может быть применен только к свойствам, объявленным внутри тела класса (но не в основном конструкторе), а также к переменным на верхнем уровне и локальным переменным;

🔵 lateinit свойства могут иметь любой тип, кроме примитивных типов (таких как Int, Long, Double и т.д.);

🔵 lateinit свойства не могут быть nullable (т.е. обязательно должно быть объявлены без знака вопроса);

🔵 lateinit свойства не могут быть проинициализированы сразу при их объявлении;

🔵 lateinit свойства должны быть инициализированы до первого обращения к ним, иначе будет выброшено исключение UninitializedPropertyAccessException;

🔵 Нельзя использовать lateinit для переменных, определенных внутри локальных областей видимости (например, внутри функций);

🔵 При использовании модификатора lateinit у свойства не должно быть пользовательских геттеров и сеттеров.

Для проверки факта инициализации переменной вызывайте метод isInitialized(). Функцию следует использовать экономно — не следует добавлять эту проверку к каждой переменной с отложенной инициализацией. Если вы используете isInitialized() слишком часто, то скорее всего вам лучше использовать тип с поддержкой null.

lateinit var catName: String

override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)

setContentView(R.layout.activity_main)

catName = "Barsik"

if (::catName.isInitialized) {
Log.d("Kot", "Hi, $catName")
}
}


А вы используете lateinit в своих проектах? 💬

🐸 Библиотека мобильного разработчика

#междусобойчик
Please open Telegram to view this post
VIEW IN TELEGRAM



tg-me.com/mobileproglib/5852
Create:
Last Update:

🌐 Отложенная инициализация свойств

Отложенная инициализация свойств — это механизм, который позволяет отложить инициализацию переменных до момента их первого использования.

Этот вариант позволяет экономить ресурсы, т.к. избегает необходимости создания объектов при инициализации класса.

➡️ lateinit

Модификатор lateinit говорит о том, что данная переменная будет инициализирована позже. При этом инициализировать свойство можно из любого места, откуда она видна.

Правила использования модификатора lateinit:

🔵 lateinit может использоваться только с var свойствами класса;

🔵 lateinit может быть применен только к свойствам, объявленным внутри тела класса (но не в основном конструкторе), а также к переменным на верхнем уровне и локальным переменным;

🔵 lateinit свойства могут иметь любой тип, кроме примитивных типов (таких как Int, Long, Double и т.д.);

🔵 lateinit свойства не могут быть nullable (т.е. обязательно должно быть объявлены без знака вопроса);

🔵 lateinit свойства не могут быть проинициализированы сразу при их объявлении;

🔵 lateinit свойства должны быть инициализированы до первого обращения к ним, иначе будет выброшено исключение UninitializedPropertyAccessException;

🔵 Нельзя использовать lateinit для переменных, определенных внутри локальных областей видимости (например, внутри функций);

🔵 При использовании модификатора lateinit у свойства не должно быть пользовательских геттеров и сеттеров.

Для проверки факта инициализации переменной вызывайте метод isInitialized(). Функцию следует использовать экономно — не следует добавлять эту проверку к каждой переменной с отложенной инициализацией. Если вы используете isInitialized() слишком часто, то скорее всего вам лучше использовать тип с поддержкой null.

lateinit var catName: String

override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)

setContentView(R.layout.activity_main)

catName = "Barsik"

if (::catName.isInitialized) {
Log.d("Kot", "Hi, $catName")
}
}


А вы используете lateinit в своих проектах? 💬

🐸 Библиотека мобильного разработчика

#междусобойчик

BY Библиотека мобильного разработчика | Android, iOS, Swift, Retrofit, Moshi, Chuck




Share with your friend now:
tg-me.com/mobileproglib/5852

View MORE
Open in Telegram


Библиотека мобильного разработчика | Android iOS Swift Retrofit Moshi Chuck Telegram | DID YOU KNOW?

Date: |

Start with a fresh view of investing strategy. The combination of risks and fads this quarter looks to be topping. That means the future is ready to move in.Likely, there will not be a wholesale shift. Company actions will aim to benefit from economic growth, inflationary pressures and a return of market-determined interest rates. In turn, all of that should drive the stock market and investment returns higher.

Библиотека мобильного разработчика | Android iOS Swift Retrofit Moshi Chuck from jp


Telegram Библиотека мобильного разработчика | Android, iOS, Swift, Retrofit, Moshi, Chuck
FROM USA